#ifndef ALTTILEDMAPEDITOR_H
#define ALTTILEDMAPEDITOR_H

#include "altabstractmapeditor.h"

#include <QMainWindow>

class QDockWidget;
class QGraphicsView;

namespace Alt {
     class Map;
     class TiledMap;
     class TilesetEditor;

     /*! Default editor for tiled maps. */
     class TiledMapEditor : public AbstractMapEditor {
          Q_OBJECT
     public:
          /*! Default constructor.
               \param fileName The name of the file to open. If the string is empty, a new map is created.
               \param parent The parent widget. */
          TiledMapEditor(const QString& fileName, QWidget* parent = 0);

          QString defaultFileFilter() const;

          Map* map() const;

     private:
          /*! Initializes this widget. */
          void init();

          /*! Initializes menu bar. */
          void initMenus();

          /*! Widget rendering the map. */
          QGraphicsView* m_graphicsView;

          /*! The tiled map being edited. */
          TiledMap* m_map;

          /*! Dock containing the material viewer widget. */
          QDockWidget* m_materialDock;

          /*! Dock containing map property widgets. */
          QDockWidget* m_propertyDock;

          /*! Dock containing rendering options and zoom control. */
          QDockWidget* m_renderDock;

          /*! Dock containing information about the currently selected tile. */
          QDockWidget* m_tileDock;

          /*! Dock containing tileset-related widgets. */
          QDockWidget* m_tilesetDock;

     };
}

#endif
